import 'package:flutter/services.dart';

class PPTextInputFormatter {
  // \u2006本质是个类似空格的字符
  // IOS默认输入法在输入汉字时候，每个拼音之间会分词
  // 如果输入“摸鱼”，在使用拼音打字时候，输入框会显示“mo yu”
  // 正是中间的这个空格，由于被FilteringTextInputFormatter过滤掉了，导致了问题，将这个字符加上即可

  /// 所有（不含表情）
  static final TextInputFormatter all = FilteringTextInputFormatter.allow(RegExp(
      r'[a-zA-Z]|[0-9]|[\u4e00-\u9fa5]|[`~!@#$%^&*()-_+={}[]"<>,.?]|[~·！@#￥%……&*（）+-=【】、|“”‘’《》，。？、\u2006]'));

  /// 仅数字(不含小数点)
  static final TextInputFormatter digits =
      FilteringTextInputFormatter.allow(RegExp(r'[0-9]'));

  /// 仅数字(含小数点)
  static final TextInputFormatter digitsOnly =
      FilteringTextInputFormatter.allow(RegExp(r'[0-9.]'));

  /// 最多两位小数的价钱
  static final TextInputFormatter price =
      FilteringTextInputFormatter.allow(RegExp(r'^\d+(\.)?[0-9]{0,2}'));

  /// 仅中文
  static final TextInputFormatter chineseOnly =
      FilteringTextInputFormatter.allow(
          RegExp(r'[\u4e00-\u9fa5]|[~·！@#￥%……&*（）+-=【】、|“”‘’《》，。？、\u2006]'));

  /// 禁止空格
  static final TextInputFormatter denySpace =
      FilteringTextInputFormatter.deny(RegExp(r'\s'));

  /// 禁止中文
  static final TextInputFormatter denyChineseCharacter =
      FilteringTextInputFormatter.deny(RegExp(r'[\u4e00-\u9fa5]'));

  /// 禁止表情
  static final TextInputFormatter denyEmoji = FilteringTextInputFormatter.deny(
      RegExp(
          '[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]'));

  /// 禁止表情符号和中文
  static final TextInputFormatter denyChineseAndEmoji =
      FilteringTextInputFormatter.deny(RegExp(r'[\u0080-\uFFFF]'));
}
